import importlib

from settings import PLUGIN_CLASS_DICT

"""
利用反射动态加载类
"""


def get_server_info(func, hostname):
    server_info = {}
    for key, path in PLUGIN_CLASS_DICT.items():
        # lib.plugins.disk.DiskPlugin   切换出 DiskPlugin
        module_path, module_name = path.rsplit('.', maxsplit=1)
        module = importlib.import_module(module_path)  # 这儿就相当于import导入模块（lib.plugins.disk.DiskPlugin）
        cls = getattr(module, module_name)  # 利用反射动态加载一个类
        plugin_object = cls()  # 类加括号实例化一个类对象
        info = plugin_object.process(func, hostname)
        server_info[key] = info
    return server_info
